package cn.iocoder.yudao.module.enterprise.controller.admin.praxisProject.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
* 实践项目 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
@ApiModel("管理后台 - 实践项目EnterpriseProjectVO")
public class EnterpriseProjectVO {

    @ApiModelProperty(value = "主键ID" )
    private Long id;

    @ApiModelProperty(value = "项目名称", required = true)
    @NotBlank(message = "项目名称不能为空")
    private String title;

    @ApiModelProperty(value = "项目类型ID")
    private Long projectTypeId;

    @ApiModelProperty(value = "举办单位logo")
    private String holdUnitUrl;

    @ApiModelProperty(value = "举办单位名称")
    private String holdUnitName;

    @ApiModelProperty(value = "项目说明")
    private String projectDescription;

    @ApiModelProperty(value = "参赛类型;1:个人;2:团队;3:个人或团队;", required = true)
    @NotNull(message = "参赛类型;1:个人;2:团队;3:个人或团队;不能为空")
    private Integer entryType;

    @ApiModelProperty(value = "参赛团队最大人数", required = true)
    @NotNull(message = "参赛团队最大人数不能为空")
    private Integer itemPeopleNum;

    @ApiModelProperty(value = "参赛须知")
    private String entryInformation;

    @ApiModelProperty(value = "比赛规则")
    private String competitionRules;

    @ApiModelProperty(value = "评选办法-评审规则")
    private String reviewRules;

    @ApiModelProperty(value = "评选办法-评审工作要求")
    private String reviewRequire;

    @ApiModelProperty(value = "参赛要求")
    private String entryRequire;

    @ApiModelProperty(value = "项目奖励")
    private String projectRewards;

    @ApiModelProperty(value = "视频介绍")
    private String videoUrl;

    @ApiModelProperty(value = "大赛组织")
    private String competitionOrganization;

    @ApiModelProperty(value = "比赛材料下载类型;1:已报名可下载,2:入选初赛可下载" )
    private Integer annexDownType;

    @ApiModelProperty(value = "状态;0:未发布;1:发布;2:下架" )
    private Integer status;

    @ApiModelProperty(value = "权重")
    private Integer weight;

    @ApiModelProperty(value = "发布时间")
    @JsonFormat(shape= JsonFormat.Shape.STRING, timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date releaseTime;

    @ApiModelProperty(value = "是否审核;0:待审核;1:审核中;2:已审核")
    private String examineFlag;

    @ApiModelProperty(value = "是否审核;0:驳回;1:通过;")
    private String examineStatus;

    @ApiModelProperty(value = "审核备注")
    private String examineNotes;

    @ApiModelProperty(value = "提交时间")
    private Date submitTime;
    @ApiModelProperty(value = "审核人")
    private String examinePeople;
    @ApiModelProperty(value = "是否显示;0:隐藏,1:显示")
    private Integer showFlag;

    @ApiModelProperty(value = "审核时间")
    @JsonFormat(shape= JsonFormat.Shape.STRING, timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date examineTime;

    @ApiModelProperty(value = "类型;1:遴选;2:初赛;3:复赛;4:决赛;" )
    private Integer scheduleType;

    @ApiModelProperty(value = "比赛材料集合")
    private List<EnterpriseAnnexVO> annexVOList;

    @ApiModelProperty(value = "项目赛程集合")
    private List<EnterpriseProjectScheduleVO> scheduleVOList;

}
